package org.custom.spring.boot.datasource.manager;

import org.custom.spring.boot.datasource.entity.datasource.DynamicDatasourceSelection;

/**
 * 动态数据源选择管理器
 *
 * @author 李坤
 * @date 2022/3/31 10:14
 */
public final class DataSourceManager {
    /**
     * 本地线程变量；存储该线程使用的数据源名称
     */
    private static final ThreadLocal<DynamicDatasourceSelection> DATA_SOURCE_MANAGER = new ThreadLocal<>();

    /**
     * 获取数据源名称
     *
     * @return 数据源名称
     */
    public static DynamicDatasourceSelection getDynamicDatasourceSelection() {
        return DATA_SOURCE_MANAGER.get();
    }

    /**
     * 设置数据源名称
     *
     * @param datasourceSelection 动态数据源选择
     */
    public static void setDynamicDatasourceSelection(DynamicDatasourceSelection datasourceSelection) {
        DATA_SOURCE_MANAGER.set(datasourceSelection);
    }

    /**
     * 清空该线程的数据源名称
     */
    public static void clear() {
        DATA_SOURCE_MANAGER.remove();
    }
}
